Application sharing technology allows capturing a series of images representing the screen display of an application running on a computing apparatus (which can be referred to as the host or server of the application sharing) or event on the screen display of the operating system desktop of the computing apparatus, and transmitting the series of images to at least one of other computing apparatus (which can be referred to as clients of the application sharing) via a computer communication network for them to be displayed on the other computing apparatus, so as to provide a screen display which is consistent with the screen display of the application or the operating system in the host environment to the users of other computer apparatus. The application sharing technology has become an important tool in our daily work, especially for a virtual team of which the team members are in different locations.
If in an application sharing session, the images on the application sharing server are updated, it is necessary to update the images on the application sharing clients correspondingly. In the current application sharing technology, in order to improve the image updating efficiency in the application sharing, the screen display of the application is partitioned into grid regions. Each region can be individually captured, scanned to detect changes, compressed and transmitted to the application sharing clients. By partitioning the screen display of the application into smaller and manageable grid regions, processor-intensive operations can be performed on smaller data blocks, thus improving the responsiveness of the application on the host. In addition, it is only necessary to transmit the regions in which the application screen image has changed (as well as the numbers or identifications of the regions) to the application sharing client, and unnecessary to transmit the regions in which the application screen image has not changed, thus the network data transmission load is reduced, and the update speed of the application screen display of the application sharing client is improved.
The U.S. Pat. No. 7,171,444, “Remote Desktop Protocol Compression System”, describes a remote desktop communication protocol. Its embodiments partition the screen into grid regions with the same size, and the size of a region is arbitrary; however, it is usually 64×64 pixels in a remote desktop protocol environment. If the remote desktop server detects changes in the image output, and the changes are contained in one or more specific regions, then only the image data of the regions that have changed and the numbers or identifications of the regions need to be transmitted to the client. In the cache of the client, the previous image data of the regions of the whole screen are cached. Therefore, the client only needs to determine which regions are changed and which regions are not changed according to the received numbers of the regions that have changed, and combine the cached image data of the regions that have not changed and the received image data of the regions that have changed, to re-create and display the whole screen image. Detecting the changes in the image output can be simply realized by, e.g., bit-wise XOR the pixels with the same position in the two captured screen bitmaps.
In the current application sharing technology, the size and positions of the grid regions are fixed, which can not be optimized for network transmission. This is because the shapes and sizes of the portions that have changed in the screen display of the application differ in numerous ways, and they are usually not aligned with the edges of the grid regions. Therefore, some grid regions may only contain a small amount of pixels that have changed (there may be only one or two changed pixels in extreme situations), while the current technology will still transmit the data of the whole regions to the client, thus resulting in the low efficiency of data transmission and waste of network bandwidth.